package com.yxw.yx_hotel.controller;

import com.yxw.yx_hotel.dto.hotel_tenant.HotelTenantAddDTO;
import com.yxw.yx_hotel.dto.hotel_tenant.HotelTenantDeleteDTO;
import com.yxw.yx_hotel.dto.hotel_tenant.HotelTenantQueryDTO;
import com.yxw.yx_hotel.dto.hotel_tenant.HotelTenantUpdateDTO;
import com.yxw.yx_hotel.entity.YxHotelTenantEntity;
import com.yxw.yx_hotel.service.HotelTenantService;
import com.yxw.yx_hotel.vo.YxHotelTenantVO;
import com.yxw.yxnet_cd_center.common.dto.PageVO;
import com.yxw.yxnet_cd_center.common.utils.BaseResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;



/**
 * @author fangmaoxin
 * @version 1.0
 * @date 2024年1月22日
 * 客户管理相关
 */
@RestController
@Api(value = "客户管理", tags = "客户管理")
@Slf4j
@RequestMapping("/tenant/v1")
public class HotelTenantController {

    @Autowired
    private HotelTenantService tenantService;

    /**
     * 查询客户列表
     */
    @PostMapping("/listTenants")
    @ApiOperation("查询客户列表")
    public BaseResult<PageVO<YxHotelTenantVO>> listTenants(@RequestBody @Validated HotelTenantQueryDTO queryDTO) {
        PageVO<YxHotelTenantVO> tenantList = tenantService.listTenants(queryDTO);
        return BaseResult.doSuccess(tenantList, "操作成功！");
    }

    /**
     * 添加客户
     */
    @PostMapping("/addTenant")
    @ApiOperation("添加客户")
    public BaseResult addTenant(@RequestBody @Validated HotelTenantAddDTO dto) {
        tenantService.addTenant(dto);
        return BaseResult.doSuccess(null, "添加客户成功");
    }

    /**
     * 更新客户信息
     */
    @PostMapping("/updateTenant")
    @ApiOperation("更新客户信息")
    public BaseResult updateTenant(@RequestBody @Validated HotelTenantUpdateDTO dto) {
        tenantService.updateTenant(dto);
        return BaseResult.doSuccess(null, "更新客户信息成功");
    }

    /**
     * 删除客户
     */
    @PostMapping("/deleteTenant")
    @ApiOperation("删除客户")
    public BaseResult deleteTenant(@RequestBody @Validated HotelTenantDeleteDTO dto) {
        tenantService.deleteTenant(dto);
        return BaseResult.doSuccess(null, "删除客户成功");
    }
}
